package com.ruoyi.edu.service;

import java.util.List;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.edu.api.domain.EduCourse;
import com.ruoyi.edu.api.domain.vo.CourseQueryVO;
import com.ruoyi.edu.api.domain.vo.EduCourseVO;

/**
 * 课程管理Service接口
 *
 * @author isahino
 * @date 2023-09-14
 */
public interface IEduCourseService extends IService<EduCourse> {
    /**
     * 查询课程管理
     *
     * @param id 课程管理主键
     * @return 课程管理
     */
    EduCourseVO selectEduCourseById(String id);

    /**
     * 查询课程管理列表
     *
     * @param eduCourse 课程管理
     * @return 课程管理集合
     */
    List<EduCourseVO> selectEduCourseList(EduCourse eduCourse);

    /**
     * 新增课程管理
     *
     * @param eduCourse 课程管理
     * @return 结果
     */
    int insertEduCourse(EduCourse eduCourse);

    /**
     * 修改课程管理
     *
     * @param eduCourse 课程管理
     * @return 结果
     */
    int updateEduCourse(EduCourse eduCourse);

    /**
     * 批量删除课程管理
     *
     * @param ids 需要删除的课程管理主键集合
     * @return 结果
     */
    int deleteEduCourseByIds(String[] ids);

    /**
     * 删除课程管理信息
     *
     * @param id 课程管理主键
     * @return 结果
     */
    int deleteEduCourseById(String id);

    /**
     * 获取8条热门课程
     * 根据 view_count 排序
     *
     * @return 8条热门课程
     */
    List<EduCourse> findHotCourse();

    /**
     * 根据查询条件封装课程分页参数
     *
     * @param result        分页结果
     * @param courseQueryVo 查询条件
     */
    void queryList(Page<EduCourse> result, CourseQueryVO courseQueryVo);
}
